package dao;

import idao.IDAOUsuario;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.TypedQuery;

import basica.Pessoa;
import basica.Usuario;
import generic.DAOGenerico;

public class DAOUsuario extends DAOGenerico<Usuario> implements IDAOUsuario {

	public DAOUsuario(EntityManager em) {
		super(em);
	}
	
	public Usuario consultarUsuarioPorLoginSenha(String login, String senha) {
		TypedQuery<Pessoa> query = getEntityManager().createQuery("Select u from Usuario u where u.login = :login and u.senha = :senha", Pessoa.class);
		query.setParameter("login", login);
		query.setParameter("senha", senha);
		try {
			return (Usuario) query.getSingleResult();
		} catch (Exception e) {
			return null;
		}
	}
	
	@Override
	public Usuario consultarUsuarioPorCpf(String cpf) {
		TypedQuery<Pessoa> query = getEntityManager().createQuery("Select p from Pessoa p where p.cpf = :cpf", Pessoa.class);
		query.setParameter("cpf", cpf);
		try {
			return (Usuario) query.getSingleResult();
		} catch (Exception e) {
			return null;
		}
	}
	
	public void removerLogicamente(Usuario usuario) {
		EntityTransaction tx = getEntityManager().getTransaction();
		try {
			tx.begin();
			usuario = getEntityManager().merge(usuario);
			//getEntityManager().remove(usuario);
			tx.commit();
			System.out.println(classePersistente.getSimpleName() + " removido com sucesso");
		} catch (Exception e){
			e.printStackTrace();
			if (tx != null && tx.isActive()){
				tx.rollback();
			}
		}
	}

	

}
